package co.sumset.vista;
import java.awt.FlowLayout;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;

import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

import co.sumset.cache.SoundCache;
import co.sumset.cache.SpriteCache;
import co.sumset.entidades.Usuario;
import co.sumset.objetos.Escenario;
import co.sumset.validacion.Validacion;




/**
 * This code was edited or generated using CloudGarden's Jigloo
 * SWT/Swing GUI Builder, which is free for non-commercial
 * use. If Jigloo is being used commercially (ie, by a corporation,
 * company or business for any purpose whatever) then you
 * should purchase a license for each developer using Jigloo.
 * Please visit www.cloudgarden.com for details.
 * Use of Jigloo implies acceptance of these licensing terms.
 * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
 * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
 * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
 */
public class VentanaRegistro extends javax.swing.JFrame implements ActionListener{
	private JLabel fondo;
	private JButton btnAceptar;
	private JLabel jLabel2;
	private JLabel jLabel3;
	private JButton btnVolver;
	private JSeparator SeparatorAba;
	private JSeparator SeparadorArri;
	private JSeparator SeparatorDer;
	private JSeparator SeparatorIzq;
	private JLabel tiutloPrincipal;
	private JTextField jtfCampoCorreo;
	private JLabel jlbTituloCorreo;
	private JTextField jtfCampoNombre;
	private JLabel jLabel1;
	private JPasswordField jpfCampoClave;
	private VentanaPrincipal ventanaPrincipal;
	private Validacion validacion;
	private boolean band_nombre,band_correo,band_clave;




	public VentanaRegistro(VentanaPrincipal ventanaPrincipal) 
	{
		super();
		this.ventanaPrincipal=ventanaPrincipal;
		validacion = new Validacion();
		initGUI();
	}

	private void initGUI() 
	{
		try {
			this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			getContentPane().setLayout(null);
			getContentPane().setBackground(new java.awt.Color(255,255,255));
			this.setTitle("Body Invaders-Registro");
			this.setResizable(false);
			this.setBounds(0, 0, 614, 384);
			this.setLocationRelativeTo(null);
			this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("res/juego/inv02.png")).getImage());
			{
				btnAceptar = new JButton();
				getContentPane().add(btnAceptar);
				btnAceptar.setLayout(null);
				btnAceptar.setBounds(219, 242, 140, 60);
				btnAceptar.setIcon(new ImageIcon(getClass().getClassLoader().getResource("res/botones/btnAceptar.png")));
				btnAceptar.addActionListener(this);
			}
			{
				jpfCampoClave = new JPasswordField();
				getContentPane().add(jpfCampoClave);
				jpfCampoClave.setBounds(209, 159, 169, 23);
			}
			{
				jLabel1 = new JLabel();
				getContentPane().add(jLabel1);
				jLabel1.setText("Clave:");
				jLabel1.setBounds(209, 141, 166, 16);
				jLabel1.setFont(new java.awt.Font("Arial Rounded MT Bold",1,14));
				jLabel1.setForeground(new java.awt.Color(0,0,0));
			}
			{
				jtfCampoNombre = new JTextField();
				getContentPane().add(jtfCampoNombre);
				jtfCampoNombre.setBounds(209, 109, 169, 23);
			}
			{
				jlbTituloCorreo = new JLabel();
				getContentPane().add(jlbTituloCorreo);
				jlbTituloCorreo.setText("Nombres:");
				jlbTituloCorreo.setBounds(209, 91, 166, 16);
				jlbTituloCorreo.setFont(new java.awt.Font("Arial Rounded MT Bold",1,14));
				jlbTituloCorreo.setForeground(new java.awt.Color(0,0,0));
			}
			{
				jLabel2 = new JLabel();
				getContentPane().add(jLabel2);
				jLabel2.setText("Correo:");
				jLabel2.setBounds(209, 191, 166, 16);
				jLabel2.setFont(new java.awt.Font("Arial Rounded MT Bold",1,14));
				jLabel2.setForeground(new java.awt.Color(0,0,0));
			}
			{
				jtfCampoCorreo = new JTextField();
				getContentPane().add(jtfCampoCorreo);
				jtfCampoCorreo.setBounds(209, 210, 169, 23);
			}
			{
				tiutloPrincipal = new JLabel();
				getContentPane().add(tiutloPrincipal);
				tiutloPrincipal.setFont(new java.awt.Font("Arnprior",1,48));
				tiutloPrincipal.setForeground(new java.awt.Color(255,255,255));
				tiutloPrincipal.setLayout(null);
				tiutloPrincipal.setBounds(170, 5, 250, 70);
				tiutloPrincipal.setIcon(new ImageIcon(getClass().getClassLoader().getResource("res/titulos/titulo01.png")));
			}
			{
				SeparatorIzq = new JSeparator();
				getContentPane().add(SeparatorIzq);
				SeparatorIzq.setOrientation(SwingConstants.VERTICAL);
				SeparatorIzq.setLayout(null);
				SeparatorIzq.setBounds(192, 84, 60, 223);
			}
			{
				SeparatorDer = new JSeparator();
				getContentPane().add(SeparatorDer);
				SeparatorDer.setOrientation(SwingConstants.VERTICAL);
				SeparatorDer.setLayout(null);
				SeparatorDer.setBounds(382, 84, 60, 223);
			}
			{
				SeparatorAba = new JSeparator();
				getContentPane().add(SeparatorAba);
				SeparatorAba.setLayout(null);
				SeparatorAba.setBounds(192, 307, 190, 10);
			}
			{
				SeparadorArri = new JSeparator();
				getContentPane().add(SeparadorArri);
				SeparadorArri.setLayout(null);
				SeparadorArri.setBounds(192, 83, 190, 11);
			}
			{
				btnVolver = new JButton();
				FlowLayout btnVolverLayout = new FlowLayout();
				getContentPane().add(btnVolver);
				btnVolver.setLayout(null);
				btnVolver.setBounds(435, 285, 160, 60);
				btnVolver.setIcon(new ImageIcon(getClass().getClassLoader().getResource("res/botones/btnVolver.png")));
				btnVolver.addActionListener(this);
			}
			{
				jLabel3 = new JLabel();
				getContentPane().add(jLabel3);
				jLabel3.setText("Registro");
				jLabel3.setFont(new java.awt.Font("Arial Rounded MT Bold",1,14));
				jLabel3.setForeground(new java.awt.Color(0,0,0));
				jLabel3.setBounds(19, 11, 101, 23);
			}
			{
				fondo = new JLabel();
				FlowLayout fondoLayout = new FlowLayout();
				getContentPane().add(getFondo());
				fondo.setIcon(new ImageIcon(getClass().getClassLoader().getResource("res/fondos/fondo1.png")));
				fondo.setLayout(null);
				fondo.setBounds(0, 0, 611, 360);
			}

			pack();
			this.setSize(614, 384);
		} catch (Exception e) {
			//add your error handling code here
			e.printStackTrace();
		}
	}



	@Override
	public void actionPerformed(ActionEvent e) 
	{

		if (e.getSource()==btnAceptar) {
			String clave= jpfCampoClave.getText();
			String nombre = jtfCampoNombre.getText();
			String correo = jtfCampoCorreo.getText();
			
			if (nombre.length()>0 && clave.length()>0 && correo.length()>0) {

				if(validacion.esLetra(nombre)==true && nombre.length()<30){
					
					if(validacion.esNumYLetra(clave)==true && clave.length()<30){
						
						if(validacion.esCorreo(correo)==true && correo.length()<100){
							
							try {
								
								if(ventanaPrincipal.getConexionUsuario().buscarPorCorreo(correo)==null){
									
									Usuario usuario= new Usuario(clave, nombre, correo);
									
									ventanaPrincipal.getConexionUsuario().crearUsuario(usuario);
									JOptionPane.showMessageDialog(this, "Su cuenta ha sido creada exitosamente");
									ventanaPrincipal.getLogger().imprimirMensaje(1,"El usuario "+nombre+" se " +
											"ha registrado exitosamente en el sistema");
									this.setVisible(false);
									limpiarCampos();
									ventanaPrincipal.limpiarCampos();
									ventanaPrincipal.setVisible(true);
									
								}
							} catch (Exception e1) {
								
								e1.printStackTrace();
							}
							
						}else{
							String[]  mensajes= new String[2];
							mensajes[0]="Error #106:\n Su correo no debe tener caracteres especiales.\n";
							mensajes[1]="Error #107:\n Su correo es demasiado largo.\n";
							String errores="";
							for (int i = 0; i < mensajes.length; i++) {
								errores+=mensajes[i];
							}
							JOptionPane.showMessageDialog(this, errores);
						}
					}else {
						String[]  mensajes= new String[2];
						mensajes[0]="Error #103:\n Su clave no debe tener caracteres especiales.\n";
						mensajes[1]="Error #104:\n Su clave es demasiada larga.\n";
						String errores="";
						for (int i = 0; i < mensajes.length; i++) {
							errores+=mensajes[i];
						}
						JOptionPane.showMessageDialog(this, errores);
					}					
				}else
				{
					String[]  mensajes= new String[2];
					mensajes[0]="Error #101:\n Su nombre no debe tener caracteres n�mericos o especiales.\n";
					mensajes[1]="Error #102:\n Su nombre es demasiado largo.\n";
					String errores="";
					for (int i = 0; i < mensajes.length; i++) {
						errores+=mensajes[i];
					}
					JOptionPane.showMessageDialog(this, errores);
				}

				
			}else{
				String[] mensajes= new String[3];
				mensajes[0]="Error #100:\n Ingrese su nombre.\n";
				mensajes[1]="Error #105:\n Ingrese una clave.\n";
				mensajes[2]="Error #108:\n Ingrese la dirrecion de su correo.\n";
				String errores="";
				for (int i = 0; i < mensajes.length; i++) {
					errores+=mensajes[i];
				}
				JOptionPane.showMessageDialog(this, errores);
			}

		}

		if (e.getSource()==btnVolver) {
			this.setVisible(false);
			this.limpiarCampos();
			ventanaPrincipal.setVisible(true);
			ventanaPrincipal.limpiarCampos();
		}
	}

	public JTextField getJtfCampoNombre() {
		return jtfCampoNombre;
	}

	public JPasswordField getJpfCampoClave() {
		return jpfCampoClave;
	}

	public JButton getJbnCrearCuenta() {
		return btnAceptar;
	}

	public JLabel getTiutloPrincipal() {
		return tiutloPrincipal;
	}

	public JLabel getFondo() {
		return fondo;
	}
	
	public void limpiarCampos()
	{
		jtfCampoNombre.setText("");
		jtfCampoCorreo.setText("");
		jpfCampoClave.setText("");
		
	}
}
